home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / linkval.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  3KB  |  136 lines

  1.  
  2.  
  3. /*  Copyright (c) 1993-1996 Algorithms Corporation  */
  4. /*  All rights reserved.  */
  5.  
  6.  
  7.  
  8.  
  9. /*  This file automatically generated by dpp - do not edit  */
  10.  
  11. #define    DPP_STRATEGY    2
  12. #define    DPP_FASTWIDE    0
  13.  
  14.  
  15.  
  16.  
  17. #define    CLASS    LinkValue_c
  18. #define    ivType    LinkValue_iv_t
  19.  
  20. #include "generics.h"
  21.  
  22. object    LinkValue_c;
  23.  
  24.  
  25. #line 26 "linkval.c"
  26. typedef struct  _LinkValue_iv_t  {
  27.     object iValue;
  28. }    LinkValue_iv_t;
  29.  
  30.  
  31.  
  32. #line 21 "linkval.d"
  33. cmeth objrtn LinkValue_cm_gNewWithObj(object self, object value)
  34.     object lnk; 
  35.     ivType *iv; 
  36.  
  37.     ChkArgNul(value, 2); 
  38.     lnk = oSuper(LinkValue_c, gNew, self)(self); 
  39.     iv = ivPtr(lnk); 
  40.     iv->iValue = value; 
  41.     return lnk; 
  42.  
  43. imeth objrtn LinkValue_im_gDeepCopy(object self)
  44. { LinkValue_iv_t *iv = GetIVs(LinkValue, self);
  45.     object nobj; 
  46.  
  47.     nobj = oSuper(LinkValue_c, gDeepCopy, self)(self); 
  48.     ivPtr(nobj)->iValue = iv->iValue ? gDeepCopy(iv->iValue) : NULL; 
  49.     return nobj; 
  50.  
  51. imeth objrtn LinkValue_im_gDeepDispose(object self)
  52. { LinkValue_iv_t *iv = GetIVs(LinkValue, self);
  53.     if (iv->iValue) 
  54.         gDeepDispose(iv->iValue); 
  55.     return oSuper(LinkValue_c, gDeepDispose, self)(self); 
  56.  
  57. imeth objrtn LinkValue_im_gValue(object self)
  58. { LinkValue_iv_t *iv = GetIVs(LinkValue, self);
  59.     return iv->iValue; 
  60.  
  61. imeth objrtn LinkValue_im_gChangeValue(object self, object value)
  62. { LinkValue_iv_t *iv = GetIVs(LinkValue, self);
  63.     ChkArgNul(value, 2); 
  64.     iv->iValue = value; 
  65.     return self; 
  66.  
  67. imeth objrtn LinkValue_im_gStringRepValue(object self)
  68. { LinkValue_iv_t *iv = GetIVs(LinkValue, self);
  69.     return iv->iValue ? gStringRepValue(iv->iValue) : gNewWithStr(String, "(null)"); 
  70.  
  71. imeth objrtn LinkValue_im_gStringRep(object self)
  72. { LinkValue_iv_t *iv = GetIVs(LinkValue, self);
  73.     object a, b, s; 
  74.  
  75.     a = oSuper(LinkValue_c, gStringRepValue, self)(self); 
  76.     b = iv->iValue ? gStringRepValue(iv->iValue) : gNewWithStr(String, "(null)"); 
  77.     s = vBuild(String, gName(ClassOf(self)), " (", a, ", ", b, ")\n", NULL); 
  78.     gDispose(a); 
  79.     gDispose(b); 
  80.     return s; 
  81.  
  82.  
  83. #line 92 "linkval.c"
  84.  
  85. objrtn    LinkValue_initialize(void)
  86. {
  87.     static  CRITICALSECTION  cs;
  88.     static  int volatile once = 0;
  89.  
  90.     ENTERCRITICALSECTION(_CI_CS_);
  91.     if (!once) {
  92.         INITIALIZECRITICALSECTION(cs);
  93.         once = 1;
  94.     }
  95.     LEAVECRITICALSECTION(_CI_CS_);
  96.  
  97.     ENTERCRITICALSECTION(cs);
  98.  
  99.     if (LinkValue_c) {
  100.         LEAVECRITICALSECTION(cs);
  101.         return LinkValue_c;
  102.     }
  103.     INHIBIT_THREADER;
  104.     Link_initialize();
  105.     if (LinkValue_c)  {
  106.         ENABLE_THREADER;
  107.         LEAVECRITICALSECTION(cs);
  108.         return LinkValue_c;
  109.     }
  110.     LinkValue_c = gNewClass(Class, "LinkValue", sizeof(LinkValue_iv_t), 0, Link, END);
  111.     cMethodFor(LinkValue, gNewWithObj, LinkValue_cm_gNewWithObj);
  112.     iMethodFor(LinkValue, gValue, LinkValue_im_gValue);
  113.     iMethodFor(LinkValue, gStringRepValue, LinkValue_im_gStringRepValue);
  114.     iMethodFor(LinkValue, gChangeValue, LinkValue_im_gChangeValue);
  115.     iMethodFor(LinkValue, gDeepDispose, LinkValue_im_gDeepDispose);
  116.     iMethodFor(LinkValue, gStringRep, LinkValue_im_gStringRep);
  117.     iMethodFor(LinkValue, gDeepCopy, LinkValue_im_gDeepCopy);
  118.  
  119.     ENABLE_THREADER;
  120.  
  121.     LEAVECRITICALSECTION(cs);
  122.  
  123.     return LinkValue_c;
  124. }
  125.  
  126.  
  127.  
  128.